package model

import "errors"

type DataSetModel struct {
	Id           string `db:"id" from:"id" json:"id"`
	Code         string `db:"code" from:"code" json:"code"`
	Name         string `db:"name" from:"name" json:"name"`
	Exec         string `db:"exec" from:"exec" json:"exec"`
	Params       string `db:"params" from:"params" json:"params"`
	Remark       string `db:"remark" from:"remark" json:"remark"`
	SortNum      int    `db:"sortNum" from:"sortNum" json:"sortNum"`
	DataSourceId string `db:"dataSourceId" from:"dataSourceId" json:"dataSourceId"`
}

func (dataSetModel *DataSetModel) Insert() error {
	_, err := DB.Exec("insert into data_set(id,code,name,remark,sortNum,dataSourceId,exec,params) values(?,?,?,?,?,?,?,?)",
		dataSetModel.Id, dataSetModel.Code, dataSetModel.Name, dataSetModel.Remark, dataSetModel.SortNum, dataSetModel.DataSourceId, dataSetModel.Exec, dataSetModel.Params,
	)
	if err != nil {
		return err
	}
	return nil
}

func (dataSetModel *DataSetModel) Update() error {
	if dataSetModel.Id == "" {
		return errors.New("No id")
	}
	_, err := DB.Exec("update data_set set code=?, name=?, exec=?, params=?,remark=?, sortNum=?, dataSourceId=? where id=?",
		dataSetModel.Code, dataSetModel.Name,
		dataSetModel.Exec, dataSetModel.Params,
		dataSetModel.Remark, dataSetModel.SortNum, dataSetModel.DataSourceId, dataSetModel.Id)
	if err != nil {
		return err
	}
	return nil
}

func (dataSetModel *DataSetModel) Delete() error {
	var err error
	if dataSetModel.Id != "" {
		_, err = DB.Exec("delete from data_set where id=?", dataSetModel.Id)
	} else {
		err = errors.New("No id")
	}
	if err != nil {
		return err
	}
	return nil
}
func (dataSetModel *DataSetModel) List() ([]DataSetModel, error) {
	dataSetModels := []DataSetModel{}
	err := DB.Select(&dataSetModels, "select * from data_set")
	if err != nil {
		return dataSetModels, err
	}
	return dataSetModels, nil
}
